package com.lbs;

import java.io.FileInputStream;
import java.io.IOException;
import java.security.GeneralSecurityException;

import javax.security.cert.CertificateException;

import com.itextpdf.text.BadElementException;
import com.lizbet.server.LbsCrypt;
import com.lizbet.server.myXmlParsingException;

public class Main {

	/**
	 * @param args
	 * @throws LbsException 
	 * @throws myXmlParsingException 
	 * @throws IOException 
	 * @throws CertificateException 
	 * @throws GeneralSecurityException 
	 * @throws BadElementException 
	 */
	public static void main(String[] args) throws LbsException, myXmlParsingException, IOException, GeneralSecurityException, CertificateException, BadElementException {
		LbsDireccion dir = new LbsDireccion();
		CFDI doc = new CFDI();
		LbsCrypt crypt = new LbsCrypt(new FileInputStream("key.key"),"12345678a",new FileInputStream("cer.cer"));

		//Datos generales
		doc.setTipoComprobante("ingreso");
		doc.setSerFolio("F");
		doc.setNumFolio("00123");
		doc.setCondicionesDePago("Contado");
		doc.setFormaDePago("En una sola Exhibicion");
		doc.setMetodoPago("Transferencia");
		doc.setNoCuenta("1234");
//		doc.setAnoAprob("2010");
//		doc.setNoAprob("123456");
		doc.setTel("56441216");
		doc.setEmail("asandoval@lizbetsoft.com");
		
		//Emisor
		doc.setEmisor("Alberto Sandoval Sotelo", "SASA841007CR8");
		dir.setCalle("Tinum");
		dir.setNoExt("Manzana 52 Lt. 6");
		dir.setColonia("Pedregal");
		dir.setCp("14100");
		dir.setEstado("D.F.");
		dir.setMunDel("Tlalpan");
		dir.setPais("México");
		doc.setDirFiscEmisor(dir);
		doc.agregarRegimen("Regimen Intermedio de las Personas Fisicas con Actividad Empresarial.");

		//Receptor
		doc.setReceptor("Cliente S.A. de C.V.", "SASA841007CR8");
		dir.setCalle("Hda. de Tomacoco");
		dir.setColonia("Impulsora popular avicola");
		dir.setNoExt("156");
		dir.setNoInt("Int. 4");
		dir.setCp("57130");
		dir.setEstado("Edo. Mex.");
		dir.setMunDel("Nezahualcoyotl");
		dir.setPais("México");
		doc.setDirFiscReceptor(dir);
		
		
		//Partidas
		doc.agregarPartida(2d, "Servicio", null, "Servicio correctivo.", 250d, 0.16d, null);
		doc.agregarPartida(1d, "Servicio", null, "Servicio preventivo.", 350d, 0.16d, null);
		doc.agregarPartida(2d, "Servicio", null, "Servicio de instalacion.", 100d, 0.16d, null);


		doc.sellar(crypt);
		doc.timbrar("asdqwezxc5432_6548");
		doc.guardarPdf("/home/alberto/fact.pdf");
		doc.guardarXml("/home/alberto/fact.xml");
	}

}
